In the future, many computer systems will have availability, serviceability and manageability requirements that cannot be met by conventional computer systems in which the access to all hardware resources by software and firmware is governed by a single controlling operating system. In particular, many computer systems in the future will need to be able to operate simultaneously as multiple individual computers or partitions, each having its own set of resources. Such computer systems will further require the ability to add, remove or adjust (e.g., swap in and out) various resources over time with respect to the different partitions. Often such computer systems, with their multiple partitions and multiple sets of resources, will employ multiple operating systems with respect to the different partitions/sets of resources.
Although potentially advantageous, such computer systems are at odds with traditional operating systems, since the design of such operating systems presumes that any given operating system is the outright sole owner of the entire computer system on which it is running, with total control over that system. To the extent that such future computer systems employ multiple partitions and sets of resources, each with their own operating systems, such a presumption cannot be maintained. Indeed, to the extent that a future computer system will employ multiple operating systems, such a computer system will often experience conflicts among the different operating systems as those operating systems interfere with each other in governing access to the various resources of the computer system. Further, such a computer system can experience other difficulties, for example, in terms of shifting (or migrating) or replacing hardware resources without taking down or rebooting the computer system. Also, such a computer system can be more difficult to service and maintain in a consistent manner, particularly when its multiple operating systems are updated. Additionally, in some circumstances, a failure in one partition can negatively impact another partition, or a malicious security attack upon a given partition can potentially be launched from another partition.
Existing manners of addressing these issues are insufficient. For example, while it is possible to predetermine and restrict responsibilities of and interactions among different partitions of a computer system by presetting the computer system when it is booted up (prior to operation of the operating systems of the computer system), such pre-configuration often is overly-confining and prevents adjustment of resources after the computer system is fully-operational without rebooting. Also for example, while full software-level machine virtualization can be used to enable shifting (migration) or replacement of hardware resources without having to take down and/or reboot the computer system, and provide enhanced serviceability, such virtualization also can result in lower performance (e.g., in terms of processing speed), and fails to provide electrical isolation.
In still other conventional arrangements, it is possible to implement one or more intermediary “hypervisor” layers or software emulators in between operating systems and the computer hardware of a computer system, and to configure those layers/emulators in a manner that effectively prevents operating system conflict. Yet such layers/emulators also are disadvantageous in certain respects. To begin with, such layers/emulators typically require a port or revision to support each new OS. Additionally, if such layers/emulators fail, this can result in Multi-Partition Single Points of Failure (MP-SPOFs) in which all of the partitions running under that software will also fail. Further the use of such layers/emulators still may not be compatible with maintaining the security of one partition relative to another partition. Additionally, interfacing between the operating systems (and applications performed via those operating systems) and the computer resources may proceed in a less efficient manner due to the presence of the layers/emulators.
For at least the above reasons, therefore, it would be advantageous if an improved system and method could be developed by which, in at least some embodiments, multiple partitions of a computer system having multiple sets of resources could simultaneously operate in a manner that substantially avoided conflicts among the different partitions (and particularly avoided conflicts among different operating systems associated with those different partitions). It would be further advantageous if, in at least some embodiments, such a new system and method allowed for relatively easy shifting, migration, and/or replacement of hardware components, without rebooting. Additionally, in at least some embodiments, it would be advantageous if such a new system and method allowed for such multiple partitions to be operated simultaneously, in a manner providing electrical isolation between components of the partitions, such that a failure within one partition did not necessarily negatively impact operation of other partition(s), and such that the occurrence of MP-SPOFs could be avoided. Also, in at least some embodiments, it would be advantageous if such a new system and method allowed for the partitions to be operated simultaneously in a manner such that a security attack upon a given partition of the computer system could not be easily launched from another partition of the computer system. Additionally, it would be advantageous if such a new system and method, in contrast to conventional hypervisor layers or emulators, automatically supported all of the operating systems running natively on the computer system (including new operating systems).